/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controladores;

import daos.UsuarioJpaController;
import daos.exceptions.IllegalOrphanException;
import daos.exceptions.NonexistentEntityException;
import daos.exceptions.PreexistingEntityException;
import daos.exceptions.RollbackFailureException;
import entidades.Usuario;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.transaction.HeuristicMixedException;
import javax.transaction.HeuristicRollbackException;
import javax.transaction.NotSupportedException;
import javax.transaction.RollbackException;
import javax.transaction.SystemException;
import javax.transaction.UserTransaction;

/**
 *
 * @author usuario
 */
@ManagedBean
@SessionScoped
public class ControladorUsuario {

    /**
     * Creates a new instance of ControladorUsuario
     */
    
    @EJB
    UsuarioJpaController daoUsuario;
    List<Usuario> listaUsuarios;
    Usuario usuarioActual;

    ConnectionFactory conection;
    
    public ControladorUsuario() {
        conection = new ConnectionFactory();
        daoUsuario = new UsuarioJpaController(null,conection.getFactory());
        listaUsuarios = daoUsuario.findUsuarioEntities();
        usuarioActual = listaUsuarios.get(0);
    }
    
    public boolean crear(int cedula,String nombre,String apellido,String rol,String contrasena){
        try {
            Usuario u = new Usuario();
            u.setCedula(cedula);
            u.setNombre(nombre);
            u.setApellidos(apellido);
            u.setRol(rol);
            u.setContrasena(contrasena);
            daoUsuario.create(u);
            return true;
        } catch (PreexistingEntityException ex) {
            Logger.getLogger(ControladorUsuario.class.getName()).log(Level.SEVERE, null, ex);
        } catch (RollbackFailureException ex) {
            Logger.getLogger(ControladorUsuario.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception ex) {
            Logger.getLogger(ControladorUsuario.class.getName()).log(Level.SEVERE, null, ex);
        }
        return false;
    }
    
    public boolean editar(int cedula,String nombre,String apellido,String rol,String contrasena){
        try {
            Usuario u = new Usuario();
                    u.setCedula(cedula);
                    u.setNombre(nombre);
                    u.setApellidos(apellido);
                    u.setRol(rol);
                    u.setContrasena(contrasena);
                    daoUsuario.edit(u);
                    return true;
        } catch (IllegalOrphanException ex) {
            Logger.getLogger(ControladorUsuario.class.getName()).log(Level.SEVERE, null, ex);
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(ControladorUsuario.class.getName()).log(Level.SEVERE, null, ex);
        } catch (RollbackFailureException ex) {
            Logger.getLogger(ControladorUsuario.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception ex) {
            Logger.getLogger(ControladorUsuario.class.getName()).log(Level.SEVERE, null, ex);
        }
        return false;
    }
    
    public List<Usuario> listar(){
        return daoUsuario.findUsuarioEntities();
    }
    
}
